<?php
// Questo gestisce i messaggi (la posta)
class Gallery extends CI_Controller{
	
	public function __construct(){
		parent::__construct();
		$this->load->model('mod_auth');
		$this->load->model('amicizia_mod');
		$this->load->helper('standard');
		$this->load->model('gallery_mod');
		
	}	
	
	
	
	public function _default($html_interno , $stato_barra_sinistra=0, $partners=0){
		$this->load->model('setting_mod');
		$this->load->model('bacheca_mod');
		
		$id_bacheca =  $this->mod_auth->id_bacheca();
		$id_utente = $this->mod_auth->id_loggato();
		
		if($stato_barra_sinistra){
		$data_barra_sinistra['setting_a']  = $this->setting_mod->array_setting_a($id_utente , $id_bacheca); 
		$data_barra_sinistra['id_bacheca'] = $id_bacheca ; 
	    $data_barra_sinistra['id_utente']  = $id_utente ; 
		$data_elenco_amici['elenco_amici'] = $this->amicizia_mod->elenco_amici($id_bacheca);
		$barra_sinistra = $this->load->view('bacheca/barra_laterale' , $data_barra_sinistra , true);
		$html_elenco_amici = $this->load->view('fissi/barra_elenco_amici' , $data_elenco_amici , true);
		$data_pagina['html_barra_laterale_sinistra'] = $barra_sinistra.$html_elenco_amici  ;
		}
		
		$data_barra_destra['data'] = "data";
		$data_pagina['html_barra_laterale_destra'] = $this->load->view('fissi/accordion' , $data_barra_destra , true);
		
		$data['arr_js'][0] = base_url()."gallery/javascript" ; 
		$data['arr_js'][1] = base_url()."assets/js/swfupload/swfupload.js" ; 
		if($partners==1) $data['arr_js'][2] = base_url()."gallery/handlers_js_partners" ; 
		else $data['arr_js'][2] = base_url()."gallery/handlers_js" ; 
		
		$data['arr_css'][0] = base_url()."assets/css/bacheca.css" ; 
		$data['arr_css'][1] = base_url()."assets/css/gallery.css" ;
		$data['arr_css'][2] = base_url()."assets/css/swfupload.css" ;
		$data['proprietario_bacheca'] = "Clanny.it | Gallery";
		
		$this->load->view('fissi/html_start', $data);
		$this->load->view('fissi/menu');
	
		// controllo richiesta amicizia
		$data_pagina['html_pagina_centrale'] = $html_interno ; 
		$this->load->view('fissi/contenitore_pagina' , $data_pagina);
		
		$this->load->view('fissi/html_end');
	}
	
	// questa serve ad ageire sul serialize
	public function cambia_ordine_img($id_gallery){
		$arr_elementi = array();
		$arr_elementi=$this->input->post('idimmagine');
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$this->gallery_mod->cambia_ordine($id_utente ,$id_pagina , $arr_elementi);
	}
	
		// questa serve ad ageire sul serialize
	public function cambia_ordine_cat($permessi_gallery){
		$arr_elementi = array();
		$arr_elementi=$this->input->post('idcat');
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		//echo "$id_utente ,$id_pagina , $permessi_gallery,  $arr_elementi";
		$this->gallery_mod->cambia_ordine_cat($id_utente ,$id_pagina , $permessi_gallery,  $arr_elementi);
	}
	
	public function index(){
		
		// Quindi questa prima deve prendere l'html della pagina e poi la invia al default
		$data = array();
		//$data['elenco_c_gallery'] =  $this->gallery_mod->elenco_cartelle_gallery( $this->mod_auth->id_loggato(),  $this->mod_auth->id_bacheca());
		
		$html = $this->load->view('gallery/main' , $data , true);
		$this->_default($html , 1);
	}
	
	public function foto($id_foto){
		
		// Dati di login
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		
		// Array vista
		$data = array();
		$data['foto'] = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$data['gallery'] = $this->gallery_mod->dettaglio_gallery($id_utente ,$id_pagina , $data['foto']['id_gallery']);
		$data['id_next'] = $this->gallery_mod->foto_successiva($id_utente ,$id_pagina , $data['foto']['id_gallery'] , $id_foto , $data['foto']['ordine']);
		$data['id_prev'] = $this->gallery_mod->foto_precedente($id_utente ,$id_pagina , $data['foto']['id_gallery'] , $id_foto , $data['foto']['ordine']);
		$data['tot_foto'] = $this->gallery_mod->foto_tot($id_utente ,$id_pagina , $data['foto']['id_gallery']);
		$html = $this->load->view('gallery/foto' , $data , true);
		$this->_default($html);
	}
	
	public function foto_partners($id_foto){
		
		// Dati di login
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		
		// Array vista
		$data = array();
		$data['foto'] = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$data['gallery'] = $this->gallery_mod->dettaglio_gallery($id_utente ,$id_pagina , $data['foto']['id_gallery']);
		$data['id_next'] = $this->gallery_mod->foto_successiva($id_utente ,$id_pagina , $data['foto']['id_gallery'] , $id_foto , $data['foto']['ordine']);
		$data['id_prev'] = $this->gallery_mod->foto_precedente($id_utente ,$id_pagina , $data['foto']['id_gallery'] , $id_foto , $data['foto']['ordine']);
		$data['tot_foto'] = $this->gallery_mod->foto_tot($id_utente ,$id_pagina , $data['foto']['id_gallery']);
		$html = $this->load->view('gallery/foto_partners' , $data , true);
		$this->_default($html);
	}
	
	public function ruota_img($path , $angle){
		$this->load->library('image_lib');
		$config['image_library'] = 'gd2';
		// $config['library_path'] = '/usr/bin/';
		$config['source_image'] = $path;
		$config['rotation_angle'] = $angle;

		$this->image_lib->initialize($config);

		if (!$this->image_lib->rotate())return 0; 
		else return 1 ; 
	}
	
	// Questa è al parte che fa ruotare la foto a destra
	public function ruota_destra($id_foto){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$foto = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$file_att = $_SERVER['SCRIPT_FILENAME'] ; 
		$dir_att  = str_replace("index.php" , "" , $file_att);
		
		$img_path = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery/{$foto['nome_file']}";
		$thumb_path = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery/{$foto['nome_thumb']}";
		
		// questa è la rotazione
		$risu_1 = $this->ruota_img($img_path , 270);
		$risu_2 = $this->ruota_img($thumb_path , 270);
		if($risu_1 && $risu_2) echo "1";
		else echo "Errore nella rotazione";
	}
	
	// Questa è al parte che fa ruotare la foto a destra
	public function ruota_sinistra($id_foto){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$foto = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$file_att = $_SERVER['SCRIPT_FILENAME'] ; 
		$dir_att  = str_replace("index.php" , "" , $file_att);
		$img_path = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery/{$foto['nome_file']}";
		$thumb_path = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery/{$foto['nome_thumb']}";
		
		// questa è la rotazione
		$risu_1 = $this->ruota_img($img_path , 90);
		$risu_2 = $this->ruota_img($thumb_path , 90);
		if($risu_1 && $risu_2) echo "1";
		else echo "Errore nella rotazione";
	}
	
	public function imposta_profilo($id_foto){
		
		$id_utente   = $this->session->userdata('id_loggato');
		$id_bacheca  = $this->session->userdata('id_bacheca'); 
		$arr_foto    = $this->gallery_mod->dettaglio_foto($id_utente ,$id_bacheca , $id_foto);
		
				
		$file_att = $_SERVER['SCRIPT_FILENAME'] ; 
		$dir_att  = str_replace("index.php" , "" , $file_att);
		
		$directory = $dir_att."doc/utenti/".$id_utente."/".$id_bacheca."/";
		
		$this->load->library('image_lib');
		$config['image_library'] = 'gd2';
		$config['create_thumb'] = TRUE;
		$config['maintain_ratio'] = TRUE;
		$config['source_image'] = $directory."gallery/".$arr_foto['nome_file'];
		$config['master_dim'] = 'width';
		$config['thumb_marker'] = '';
		
		
		//echo $directory."user_big.jpg<br/>";
		//echo "-> è un file -".is_file($directory."user_big.png")."-<br/>";
		//echo "-> è una dir -".is_dir($directory)."-<br/>";
		// echo "->".$_SERVER['SCRIPT_FILENAME']."<-<br/>";
		
		if(is_file($directory."user_big.jpg")) @chmod($directory."user_big.jpg", 0777);
		$config['width'] = 256;
		$config['height'] = 256;
		$config['new_image'] = $directory."user_big.jpg";
		$this->image_lib->initialize($config);
		$res_1 = $this->image_lib->resize();
		
		if(is_file($directory."user_medium.jpg")) @chmod($directory."user_medium.jpg", 0777);
		$config['width'] = 128;
		$config['height'] = 128;
		$config['new_image'] = $directory."user_medium.jpg";
		$this->image_lib->initialize($config);
		$res_2 = $this->image_lib->resize();
		
		if(is_file($directory."user_small.jpg")) @chmod($directory."user_small.jpg", 0777);
		$config['width'] = 48;
		$config['height'] = 48;
		$config['new_image'] = $directory."user_small.jpg";
		$this->image_lib->initialize($config);
		$res_3 = $this->image_lib->resize();
		
		if(is_file($directory."user_micro.jpg")) @chmod($directory."user_micro.jpg", 0777);
		$config['width'] = 32;
		$config['height'] = 32;
		$config['new_image'] = $directory."user_micro.jpg";
		$this->image_lib->initialize($config);
		$res_4 = $this->image_lib->resize();
		
		
		if($res_1 && $res_2 && $res_3 && $res_4){
			
			echo "1";
		}
		else echo $this->image_lib->display_errors();
	}
	
	// Questa è la parte che fornisce la form modifica
	public function form_modifica_gallery($id_gallery){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$data['gallery'] = $this->gallery_mod->dettaglio_gallery($id_utente ,$id_pagina , $id_gallery);
		$this->load->view('gallery/form_modifica_gallery' , $data);
	}
	
	// Questa è la form che modifica la gallery
	public function modifica_gallery_db(){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		
		$id_gallery = $this->input->post('id_gallery');
		$nome_gallery = $this->input->post('nome_gallery');
		$permessi_gallery = $this->input->post('permessi_gallery');
		
		$risu = $this->gallery_mod->modifica_gallery($id_utente ,$id_pagina , $id_gallery , $nome_gallery , $permessi_gallery);
		echo $risu ; 
	}
	
	// gallery_partenrs
	public function dettaglio_partners(){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		// poi bisogna fare il controllo per capire se la gallery può essre visualizzata o meno...
		// Quindi questa prima deve prendere l'html della pagina e poi la invia al default
		$data = array();
		$data['gallery'] = $this->gallery_mod->dettaglio_partners($id_utente ,$id_pagina);
		//$data['id_gallery'] = $id_gallery ;
		$data['id_gallery'] = $data['gallery']['id'] ;
		$data['nome_gallery'] = $data['gallery']['nome'] ;
		 
		$html = $this->load->view('gallery/dettaglio_partners' , $data , true);
		$this->_default($html, 0 , 1);
	}
	
	public function dettaglio($id_gallery){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		// poi bisogna fare il controllo per capire se la gallery può essre visualizzata o meno...
		// Quindi questa prima deve prendere l'html della pagina e poi la invia al default
		$data = array();
		$data['gallery'] = $this->gallery_mod->dettaglio_gallery($id_utente ,$id_pagina , $id_gallery);
		$data['id_gallery'] = $id_gallery ;
		$data['nome_gallery'] = $data['gallery']['nome'] ;
		 
		$html = $this->load->view('gallery/dettaglio' , $data , true);
		$this->_default($html);
	}
	
	// ora bisogna prima eliminare la foto, poi bisogna rinumerare l'ordine
	public function elimina_foto($id_foto){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$arr_foto  = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$prossima = $this->gallery_mod->foto_successiva($id_utente ,$id_pagina , $arr_foto['id_gallery'] , $id_foto , $arr_foto['ordine']);
		
		$risultato = $this->gallery_mod->elimina_foto($id_utente, $id_pagina, $arr_foto['id_gallery'] , $id_foto );
		if($risultato){
			$file_att = $_SERVER['SCRIPT_FILENAME'] ; 
			$dir_att  = str_replace("index.php" , "" , $file_att);
		
			$dir = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery";
			$nome_foto = $arr_foto['nome_file'] ;
			$nome_thumb = $arr_foto['nome_thumb'];
			
			unlink($dir."/$nome_foto");
			unlink($dir."/$nome_thumb");
			// DOpo aver cancellato 
			echo $prossima;
			
		}else echo "0";
	}
	
	
	// questa è la parte che gestisce l'elenco immagini in una certa gallery
	public function elenco_immagini_partners($id_gallery){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$data['elenco_img'] = $this->gallery_mod->elenco_immagini($id_utente ,$id_pagina , $id_gallery);
		//echo "ciao" ; 
		$this->load->view('gallery/elenco_img_partners' , $data);
	}
	
	// questa è la parte che gestisce l'elenco immagini in una certa gallery
	public function elenco_immagini($id_gallery){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$data['elenco_img'] = $this->gallery_mod->elenco_immagini($id_utente ,$id_pagina , $id_gallery);
		//echo "ciao" ; 
		$this->load->view('gallery/elenco_img' , $data);
	}
	
	// Questo è il pezzo che carica il file
	public function upload_file($id_gallery){
		
		// A questo punto devo andare a verificare l'id della gallery se è corretta ci carico dentro i file
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		
		// Check se l'id bacheca esiste ed associato con questo certo utente
		$risu_check = $this->gallery_mod->check_bacheca_upload($id_utente ,$id_pagina , $id_gallery );
		
		if(!empty($_FILES) && $risu_check) {
			$file_att = $_SERVER['SCRIPT_FILENAME'] ; 
			$dir_att  = str_replace("index.php" , "" , $file_att);
		
			$rand= rand ( 100 , 900 );
			$tempFile   = $_FILES['Filedata']['tmp_name'];
			$targetPath = $dir_att."doc/utenti/{$id_utente}/{$id_pagina}/gallery";
			$fileParts  = pathinfo($_FILES['Filedata']['name']);
			$nome_file  = $id_utente."_".$id_pagina."_".time().$rand.".".$fileParts['extension'];
			$nome_thumb = $id_utente."_".$id_pagina."_".time().$rand."_thumb.".$fileParts['extension'];
			$targetFile = rtrim($targetPath,'/') . "/".$nome_file ;
			$targetThumb = rtrim($targetPath,'/') . "/".$nome_thumb ;
			//echo $targetFile ;
			// Validate the file type
			$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
			
			if(in_array($fileParts['extension'],$fileTypes)) {
				move_uploaded_file($tempFile, $targetFile);
				chmod($targetFile, 0777);
				// poi dovrei fare anche l'anteprima... no ?
				
				$config['image_library'] = 'gd2';
				$config['source_image'] = $targetFile;
				$config['create_thumb'] = TRUE;
				$config['maintain_ratio'] = TRUE;
				$config['width'] = 100;
				$config['height'] = 100;

				$this->load->library('image_lib', $config);

				$this->image_lib->resize();
				chmod($targetThumb, 0777);
				
				$this->gallery_mod->registra_file($id_utente ,$id_pagina , $id_gallery , $nome_file , $nome_thumb);
				echo 'FILEID: $nome_file';
			}else echo 'Il tipo file selezionato non è valido';
		}
		else echo "Errore : $risu_check ";
		
	}
	// questa deve far comparire la gallery con la descrizione che può essere modificata
	public function modifica_descrizione_foto($id_foto){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$data['foto']  = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$this->load->view('gallery/modifica_descrizione_foto' , $data );
	}
	public function modifica_descrizione_foto_db($id_foto){
		$id_utente = $this->mod_auth->id_loggato();
		$id_pagina = $this->mod_auth->id_bacheca();
		$testo = $this->input->post('testo');
		$risu = $this->gallery_mod->modifica_testo_foto($id_utente , $id_pagina ,$id_foto ,$testo );
		
		// Riprendo i dati
		$data['foto']  = $this->gallery_mod->dettaglio_foto($id_utente ,$id_pagina , $id_foto);
		$this->load->view('gallery/descrizione_foto' , $data );
		//echo $risu ;
		//$this->load->view('gallery/modifica_descrizione_foto' , $data );
	}
	
	
	public function elenco_cat(){
		$data['elenco'] =  $this->gallery_mod->elenco_cartelle_gallery( $this->mod_auth->id_loggato(),  $this->mod_auth->id_bacheca());
		$html = $this->load->view('gallery/elenco_cat' , $data );
		echo $html ;
	}
	
	public function inserisci_db(){
		$nome = $this->input->post('nome');
		$permessi = $this->input->post('permessi');
		//echo "$nome $permessi";
		echo $this->gallery_mod->inserisci_db($this->mod_auth->id_loggato() ,$this->mod_auth->id_bacheca() , $nome, $permessi);
		
	}
	
	public function form_inserisci(){
		$this->load->view('gallery/form_inserisci');
	}
	
	
	public function javascript(){
		$this->load->view('gallery/javascript');
	}
	
	public function handlers_js(){
		$this->load->view('gallery/handlers');
	}
	
	public function handlers_js_partners(){
		$this->load->view('gallery/handlers_partners');
	}
	
	
}

?>
